package com.neusoft.gene.nep.role.service.impl;

//LambdaQueryWrapper:MyBatis-Plus提供的Lambda查询包装器，用于构建查询条件。
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.neusoft.gene.nep.entity.CommonResult;
import com.neusoft.gene.nep.role.mapper.MemberMapper;
import com.neusoft.gene.nep.role.myjwt.JwtService;
import com.neusoft.gene.nep.role.service.IMemberService;
import com.neusoft.gene.nep.entity.CommonResult;
import com.neusoft.gene.nep.entity.Member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Description: TODO
 * 实现了用户登录和验证token的服务类（MemberServiceImpl）
 *  通过调用JwtService生成和解析JWT token
 *  使用MemberMapper与数据库交互来实现登录和验证逻辑
 * @author: 君醉
 * @date: 2024/6/19 14:20
*/


@Service
public class MemberServiceImpl  extends ServiceImpl<MemberMapper, Member> implements IMemberService {
    //自动装配注解
    @Autowired
    JwtService jwtService;

    @Override
    public CommonResult<Member> login(String logid, String logpwd) {
        //使用LambdaQueryWrapper构建查询条件，查询用户表中是否存在对应的用户。
        LambdaQueryWrapper<Member> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Member::getLogid,logid);
        queryWrapper.eq(Member::getLogpwd,logpwd);
        Member member = getOne(queryWrapper);
        if(member != null){
            //如果存在对应的用户，则调用jwtService.generateToken(member)生成该用户的JWT token，并将token设置到用户对象中。
            member.setToken(jwtService.generateToken(member));
            //将用户对象封装到通用结果对象中并返回
            return CommonResult.success(member);
        }
        return null;
    }

    @Override
    public CommonResult<Member> pass(String token) {
        //调用jwtService.parseToken(token)解析token，获取其中的用户信息
        Member member =  jwtService.parseToken(token);
        if (member!=null){
            //将用户信息封装到通用结果对象中并返回
            return CommonResult.success(member);
        }
        return null;
    }
}
